package com.example.examsystem.dto;

import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

import java.time.LocalDateTime;

/**
 * 通知公告数据传输对象
 */
@Data
public class NoticeDto {
    
    /**
     * 通知ID
     */
    private Long id;
    
    /**
     * 标题
     */
    @NotBlank(message = "标题不能为空")
    @Size(max = 200, message = "标题长度不能超过200个字符")
    private String title;
    
    /**
     * 内容
     */
    @NotBlank(message = "内容不能为空")
    private String content;
    
    /**
     * 类型
     */
    @NotBlank(message = "类型不能为空")
    private String type;
    
    /**
     * 状态
     */
    private String status;
    
    /**
     * 目标类型
     */
    @NotBlank(message = "目标类型不能为空")
    private String targetType;
    
    /**
     * 目标ID列表
     */
    private String targetIds;
    
    /**
     * 是否置顶
     */
    private Boolean isTop;
    
    /**
     * 是否紧急
     */
    private Boolean isUrgent;
    
    /**
     * 发布时间
     */
    private LocalDateTime publishTime;
    
    /**
     * 过期时间
     */
    private LocalDateTime expireTime;
    
    /**
     * 浏览次数
     */
    private Integer viewCount;
    
    /**
     * 创建者ID
     */
    private Long createdBy;
    
    /**
     * 创建者用户名
     */
    private String creatorUsername;
    
    /**
     * 创建者姓名
     */
    private String creatorFullName;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
}